package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(schema = "REPUESTOS", name = "REP_MOV_IMAGEN_REPUESTO")
public class ImagenRepuesto implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE , generator="SEQ_REP_MOV_IMAGEN_REPUESTO")
	@SequenceGenerator(name = "SEQ_REP_MOV_IMAGEN_REPUESTO", sequenceName = "REPUESTOS.SEQ_REP_MOV_IMAGEN_REPUESTO", allocationSize = 0)
	@Column(name="NUM_ID_IMAGEN_REPUESTO")
	private Integer idImagenRepuesto;
	
	/* @EmbeddedId
	private ImagenRepuestoPK imagenRepuestoPK; */
	
	@ManyToOne
	@JoinColumn(name="NUM_ID_IMAGEN", referencedColumnName="NUM_ID_IMAGEN", insertable = true, updatable = true)
	private Imagen imagen;
	
	@ManyToOne
	@JoinColumn(name="NUM_ID_REPUESTO", referencedColumnName="NUM_ID_REPUESTO", insertable = true, updatable = true)
	private Repuesto repuesto;
	
	@Transient
	private String keyListado;
	
	@Column(name="NUM_POSICION")
	private Integer posicion;
	
	@Column(name="CAN_REFERENCIAL")
	private Integer cantidadReferencial;

	@Column(name = "IND_ESTADO", length=1)
	private String estado;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_USUARIO_CREACION",referencedColumnName="COD_ID_USUARIO" )
	private Usuario usuarioCreacion;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_USUARIO_MODIFICACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioModificacion;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_USUARIO_ELIMINACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioEliminacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_creacion")
	private Date fechaCreacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_modificacion")
	private Date fechaModificacion;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_eliminacion")
	private Date fechaEliminacion;
	
	@Column(name="OBS_IMAGEN_REPUESTO")
	private String observacion;
	
	/*** Constructores ***/
	
	public ImagenRepuesto() {
		// this.imagenRepuestoPK = new ImagenRepuestoPK();
		this.imagen = new Imagen();
		this.repuesto = new Repuesto();
	}

	/*** Getters & Setters ***/
	
	public Integer getIdImagenRepuesto() {
		return idImagenRepuesto;
	}

	public void setIdImagenRepuesto(Integer idImagenRepuesto) {
		this.idImagenRepuesto = idImagenRepuesto;
	}

	/* public ImagenRepuestoPK getImagenRepuestoPK() {
		return imagenRepuestoPK;
	}

	public void setImagenRepuestoPK(ImagenRepuestoPK imagenRepuestoPK) {
		this.imagenRepuestoPK = imagenRepuestoPK;
	} */

	public Imagen getImagen() {
		return imagen;
	}

	public void setImagen(Imagen imagen) {
		this.imagen = imagen;
	}

	public Repuesto getRepuesto() {
		return repuesto;
	}

	public void setRepuesto(Repuesto repuesto) {
		this.repuesto = repuesto;
	}

	public Integer getPosicion() {
		return posicion;
	}

	public void setPosicion(Integer posicion) {
		this.posicion = posicion;
	}

	public String getKeyListado() {
		return keyListado;
	}

	public void setKeyListado(String keyListado) {
		this.keyListado = keyListado;
	}

	public Integer getCantidadReferencial() {
		return cantidadReferencial;
	}

	public void setCantidadReferencial(Integer cantidadReferencial) {
		this.cantidadReferencial = cantidadReferencial;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Usuario getUsuarioCreacion() {
		return usuarioCreacion;
	}

	public void setUsuarioCreacion(Usuario usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}

	public Usuario getUsuarioModificacion() {
		return usuarioModificacion;
	}

	public void setUsuarioModificacion(Usuario usuarioModificacion) {
		this.usuarioModificacion = usuarioModificacion;
	}

	public Usuario getUsuarioEliminacion() {
		return usuarioEliminacion;
	}

	public void setUsuarioEliminacion(Usuario usuarioEliminacion) {
		this.usuarioEliminacion = usuarioEliminacion;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public Date getFechaModificacion() {
		return fechaModificacion;
	}

	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}

	public Date getFechaEliminacion() {
		return fechaEliminacion;
	}

	public void setFechaEliminacion(Date fechaEliminacion) {
		this.fechaEliminacion = fechaEliminacion;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	public String getObservacion() {
		return observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion.toUpperCase();
	}
	
	
}
